Django ORM এর Manager এবং Custom Manager

Web Development - জ্যাঙ্গো (Django) - Django ডাটাবেস সম্পর্ক এবং ORM কুয়েরি
241

Django-র ORM (Object-Relational Mapping) সিস্টেম একটি শক্তিশালী এবং ব্যবহারবান্ধব পদ্ধতি, যা ডেটাবেসের সাথে যোগাযোগ করতে সাহায্য করে। ORM এর মাধ্যমে আপনি ডেটাবেসের টেবিলগুলোর সাথে কাজ করতে পারেন, যেমন পঠন (Read), লেখা (Write), আপডেট (Update) এবং মুছে ফেলা (Delete)। Django ORM এর সাথে কাজ করার সময় Manager এবং Custom Manager দুটি গুরুত্বপূর্ণ বিষয়।


Django ORM এর Manager

Django-র Manager হলো একটি বিশেষ ক্লাস, যা মডেলের (Model) সাথে সম্পর্কিত ডেটাবেস অপারেশন পরিচালনা করে। এটি ডিফল্টভাবে মডেল ক্লাসের সাথে আসে এবং ডেটাবেসের রেকর্ডগুলি পরিচালনা করতে বিভিন্ন পদ্ধতি (Methods) প্রদান করে।

১. Manager এর কাজ

Manager ডেটাবেসের সাথে কাজ করার জন্য বিভিন্ন কার্যকরী মেথড সরবরাহ করে, যেমন filter(), exclude(), get(), create() ইত্যাদি। প্রতি মডেলের জন্য একটি ডিফল্ট Manager থাকে, যা আপনাকে সাধারণভাবে ডেটাবেস অপারেশন করতে সাহায্য করে।

উদাহরণ:
from django.db import models

class Author(models.Model):
    name = models.CharField(max_length=100)
    birth_date = models.DateField()

    # Default manager
    objects = models.Manager()

class Book(models.Model):
    title = models.CharField(max_length=200)
    author = models.ForeignKey(Author, on_delete=models.CASCADE)
    published_date = models.DateField()

    # Default manager
    objects = models.Manager()

এখানে, Author এবং Book মডেলগুলির জন্য objects নামক ডিফল্ট Manager পাওয়া যাচ্ছে, যা আপনাকে ডেটাবেসের রেকর্ডগুলি পরিচালনা করতে সাহায্য করবে। আপনি objects Manager ব্যবহার করে যেমন ডেটা বের করতে পারবেন:

# All books
books = Book.objects.all()

# Books filtered by author
books_by_author = Book.objects.filter(author__name="John Doe")

Custom Manager

আপনি যদি আপনার প্রোজেক্টে কিছু কাস্টম লজিক প্রয়োগ করতে চান, তাহলে আপনি একটি Custom Manager তৈরি করতে পারেন। Custom Manager-এ আপনি আপনার নিজস্ব মেথড যোগ করতে পারেন যা সাধারণভাবে ব্যবহৃত হয়, যেমন নির্দিষ্ট শর্তে ডেটা ফিল্টার করা বা একটি কাস্টম কুয়েরি তৈরি করা।

১. Custom Manager তৈরি করা

Custom Manager তৈরি করতে, আপনাকে models.Manager ক্লাসের একটি নতুন সাবক্লাস তৈরি করতে হবে এবং এতে আপনার কাস্টম মেথডগুলো যোগ করতে হবে।

উদাহরণ:
from django.db import models

class ActiveBookManager(models.Manager):
    def get_queryset(self):
        return super().get_queryset().filter(is_active=True)
    
    def available_books(self):
        return self.get_queryset().filter(is_available=True)

class Book(models.Model):
    title = models.CharField(max_length=200)
    author = models.ForeignKey('Author', on_delete=models.CASCADE)
    is_active = models.BooleanField(default=True)
    is_available = models.BooleanField(default=True)

    # Custom manager
    active_books = ActiveBookManager()

এখানে, ActiveBookManager একটি কাস্টম Manager তৈরি করেছে, যা কেবল active বইগুলোকে ফিল্টার করবে। active_books মেথডটি get_queryset() মেথডটি ওভাররাইড (override) করে, যাতে কেবলমাত্র is_active=True ফিল্ডে থাকা বইগুলো রিটার্ন করা হয়।

২. Custom Manager এর ব্যবহার

এখন আপনি Book মডেলের active_books Manager ব্যবহার করে শুধুমাত্র active বইগুলো পেতে পারেন, যেমন:

# Get all active books
active_books = Book.active_books.all()

# Get available active books
available_books = Book.active_books.available_books()

এই পদ্ধতিতে, Custom Manager এর মাধ্যমে আপনি কাস্টম কুয়েরি লজিক তৈরি এবং প্রয়োগ করতে পারেন।


Manager এবং Custom Manager এর সুবিধা

  • Code Reusability: আপনি একাধিক মডেলে একই ধরনের ডেটাবেস অপারেশন প্রয়োগ করতে Manager ব্যবহার করতে পারেন। এটি কোড পুনঃব্যবহারযোগ্যতা বৃদ্ধি করে।
  • Encapsulation: কাস্টম মেথডের মাধ্যমে আপনি ডেটাবেসের অপারেশনগুলোকে একটি জায়গায় রাখতে পারেন এবং মডেল ক্লাসের বাইরে এদের ব্যবহার করতে পারেন।
  • Query Optimization: Custom Manager ব্যবহার করে আপনি বিশেষ ধরনের কুয়েরি বা ফিল্টার লজিক তৈরি করতে পারেন, যা সিস্টেমের পারফরম্যান্স বাড়াতে সহায়ক হতে পারে।

সারাংশ

  • Manager হলো Django ORM এর একটি ক্লাস, যা মডেলের ডেটাবেস অপারেশন পরিচালনা করে।
  • Custom Manager ব্যবহার করে আপনি কাস্টম ডেটাবেস কুয়েরি লজিক তৈরি করতে পারেন এবং এটি মডেল ক্লাসে ইন্টিগ্রেট করতে পারেন।
  • Custom Manager ব্যবহার করে সাধারণভাবে ব্যবহৃত কুয়েরি অপারেশনগুলোকে কাস্টমাইজ করে আরও কার্যকরী এবং পুনঃব্যবহারযোগ্য কোড তৈরি করা যায়।
Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...